
plan du cours

- Concept objet & fonctionnel
  - objet
    - encapsulation
  - mutabilité
  - soustypage
    - Liskov
  - polymorphisme
  - typage et languages à Objet
    C++, Smalltalk, Java, Ruby, Python, Self, JavaScript
  - interface & héritage
    - mixin & traits
  - closure/lambda

- Runtime & VM
  - langage
    - SmallTalk, Self, Perl, Python, Java, Ruby, JavaScript, C#
    - VM
      - Chargeur de classes
      - interpreter ?
      - GC
      - builtin concurrency (section critique/point de RDV)
    - GC
      - mapping en mémoire (2 word header)
      - algo de GC
        - ref counter
        - safepoint
        - mark
          - sweep
          - compact
            (back pointer)
        - hypothèse generationelle
          - barrière en écriture
        - référence faible
    - vtable
  - JIT & performance
    - exemple
      - appel de fonction
      - complexite: mort de rire
    - JIT optimisations
      - inlining
      - deoptimisation (CHA)
      - loop hoisting/unrolling
    - performance
      - micro-benchmark

- Java
  - concepts
  - implementation
    - separation type primtif/wrapper
    - pas de value class/struct
    - erasure des generics
    - synchronized + atomic
  
  - Java 1/2/5/7
  - Java built-in
    - Object
    - String
      - interning
      - switch
    - type primitif & wrapper
    - boxing/unboxing
  
- Appel de méthode
  - varargs
  - surcharge
  - redéfinition
  
- Exception
  - multi-catch & precise rethrow 
  - try/finally
  - try with resources

- Classe interne & class anonyme
- Enumeration
  - ordinal/name
  - switch
  - values/valueOf

- Type paramétré
  - utilisation

  - declaration
    - @SuppressWarnings
    - @SafeVarargs

- Collection

- Reflection & annotations
  - Securité
  - Class
    - Field
    - Constructor
    - Method
  - Annotation
  - MethodHandle
    - Lookup
    - invokeExact/invoke

- Concurrence

- IO

  
      

